<?php
    /**
     * 单利模式
     */
    class Single{
        static $instance=null; //第二步 定义一个静态属性，初始值为null

        private function __construct(){ //第一步 私有化构造方法防止new创建对象
            echo 'class instance .<br>';
        }

       public static function getInstance(){  //第三步 定义一个静态方法，判断对象是否生成并返回该对象
           if(is_null(self::$instance)){
               self::$instance=new self();
           }
           return self::$instance;
       }

       public function abc(){
           return 'abc';
       }
    }

    $ob1 = Single::getInstance(); //只会实例化一次
    $ob2 = Single::getInstance(); 
    $ob3 = Single::getInstance();
    $ob4 = Single::getInstance();
    echo $ob1->abc(); //打印 class instance abc
    echo $ob2->abc(); //打印 abc
    echo $ob3->abc(); //打印 abc
    echo $ob4->abc(); //打印 abc
?>